<!DOCTYPE html>
<html>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>交互 - 绘制工具</title>
<style type="text/css">
    html,
    body {
        margin: 0px;
        height: 100%;
        width: 100%
    }

    .container {
        width: 100%;
        height: 100%
    }
</style>
<link rel="stylesheet" href="https://unpkg.com/maptalks/dist/maptalks.css">
<script type="text/javascript" src="https://unpkg.com/maptalks/dist/maptalks.min.js"></script>

<body>

    <div id="map" class="container"></div>

    <script>

        var map = new maptalks.Map('map', {
            center: [-0.113049, 51.498568],
            zoom: 14,
            baseLayer: new maptalks.TileLayer('base', {
                urlTemplate: 'https://{s}.basemaps.cartocdn.com/light_all/{z}/{x}/{y}.png',
                subdomains: ['a', 'b', 'c', 'd'],
                attribution: '&copy; <a href="http://osm.org">OpenStreetMap</a> contributors, &copy; <a href="https://carto.com/">CARTO</a>'
            })
        });

        var layer = new maptalks.VectorLayer('vector').addTo(map);

        var drawTool = new maptalks.DrawTool({
            mode: 'Point',
            action: 'clickDblclick',
            blockGeometryEvents: true
        }).addTo(map).disable();
        drawTool.on('drawend', function (param) {
            console.log(JSON.stringify(param.geometry.toGeoJSON()))
            layer.addGeometry(param.geometry);
        });
        window.onkeydown = function () {
            drawTool.disable();
        }
        var items = ['Point', 'LineString', 'Polygon', 'Circle', 'Ellipse', 'Rectangle', 'FreeHandLineString', 'FreeHandPolygon'].map(function (value) {
            return {
                item: value,
                click: function () {
                    drawTool.setMode(value).enable();
                }
            };
        });

        var toolbar = new maptalks.control.Toolbar({
            items: [
                {
                    item: 'Shape',
                    children: items
                },
                {
                    item: 'Disable',
                    click: function () {
                        drawTool.disable();
                    }
                },
                {
                    item: 'Clear',
                    click: function () {
                        layer.clear();
                    }
                }
            ]
        }).addTo(map);
        console.log(map.getLayers());
    </script>
</body>

</html>